import '../entities/note.dart';
import '../entities/note_request.dart';

/// 笔记仓库接口
abstract class NoteRepository {
  /// 获取笔记列表
  Future<List<Note>> getNotes({
    int? projectId,
    int? todoId,
    String? keyword,
    List<String>? tags,
    int page = 0,
    int size = 20,
  });

  /// 获取笔记详情
  Future<Note> getNote(int noteId);

  /// 创建笔记
  Future<Note> createNote(NoteCreateRequest request);

  /// 更新笔记
  Future<Note> updateNote(int noteId, NoteUpdateRequest request);

  /// 删除笔记
  Future<void> deleteNote(int noteId);

  /// 搜索笔记
  Future<List<Note>> searchNotes(String keyword);

  /// 根据标签获取笔记
  Future<List<Note>> getNotesByTags(List<String> tags);
}
